package helpers.grupo.jerarquia.integracion;

import helpers.Helper;
import cliente.pagina.*;
import persistencia.dominio.*;
import server.aula.ControlAula;
import server.comunicacion.ControlComunicacion;
import server.grupo.ControlGrupo;
import server.grupo.ControlParticipanteGrupo;
import server.grupo.Integracion.ControlIntegracion;
import java.util.*;

import comun.constantes.*;
import cliente.pagina.contenido.comunicacionArchivo.*;
import cliente.pagina.contenido.grupo.jerarquia.integracion.ContenidoIntegracion;
import cliente.pagina.contenido.grupo.jerarquia.integracion.ContenidoInvitacion;
import cliente.pagina.contenido.grupo.jerarquia.integracion.ContenidoSolicitud;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class HelperIntegracion extends Helper {
  
  final int CANTIDAD_CARACTERES_TEXTO_RESUMIDO = 20;
  private ContenidoIntegracion contenidoIntegracion = null;
  
  public HelperIntegracion(Pagina pagina, ContenidoIntegracion contenidoIntegracion) {
    super(pagina);
    this.contenidoIntegracion = contenidoIntegracion;
  }

  public HelperIntegracion(Pagina pagina){
    super(pagina);
  }

  public String getHTMLUltimasIntegracionesCompletas(String tipoIntegracion, int cantidadTextos) throws Exception{
    String html = "";
      ControlIntegracion controlIntegracion = new ControlIntegracion(this.persistencia);
      Vector integraciones = null;
      if (tipoIntegracion.compareTo(RECURSOS.INVITACION)==0){
 	    	integraciones = controlIntegracion.getUltimasInvitaciones(this.pagina.getIdGrupo(),cantidadTextos);
  	  }else if (tipoIntegracion.compareTo(RECURSOS.SOLICITUD)==0){
	   	    integraciones = controlIntegracion.getUltimasSolicitudes(this.pagina.getIdGrupo(),cantidadTextos);
  	  }       
      int integracion = 0;
      Enumeration enum = integraciones.elements();
      while (enum.hasMoreElements() && (integracion++<cantidadTextos)) {
        Texto texto = (Texto)enum.nextElement();
        if (integracion!=1)
          html += "  <div class=\"linea\">&nbsp;</div>\n\t\t";
        html += this.getHtmlTextoIntegracion(texto);
      }
      return html;
 
  }
     
 public String getHTMLUltimasIntegracionesResumidas(String tipoIntegracion,int cantidadTextos, int indicePrimerTexto) throws Exception{
   String html = "";
     //DE ACUERDO AL TIPO DE INTEGRACION al CONTENIDO
     ControlIntegracion controlIntegracion = new ControlIntegracion(this.persistencia);
     Vector integraciones = null;
     ContenidoIntegracion contenidoIntegracion = null;
     if (tipoIntegracion.compareTo(RECURSOS.INVITACION)==0){
	    	integraciones = controlIntegracion.getUltimasInvitaciones(this.pagina.getIdGrupo(),cantidadTextos+indicePrimerTexto);
	    	contenidoIntegracion = new ContenidoInvitacion(this.pagina);
	  }else if (tipoIntegracion.compareTo(RECURSOS.SOLICITUD)==0){
	   	    integraciones = controlIntegracion.getUltimasSolicitudes(this.pagina.getIdGrupo(),cantidadTextos+indicePrimerTexto);
	   	    contenidoIntegracion = new ContenidoSolicitud(this.pagina);
	  }
     //ContenidoComunicacionArchivo contenidoComunicacionArchivo = ContenidoComunicacionArchivo.getTipoComunicacionArchivo(tipoIntegracion,this.pagina);
     int integracion = 0;
     Enumeration enum = integraciones.elements();
     //avanzar lo primeros textos
     while (enum.hasMoreElements() && (integracion++<indicePrimerTexto)){
       enum.nextElement();
     }
     
     //generar HTML de Texto resumidos
     if (enum.hasMoreElements())
       html += "<h4>"+this.contenidoIntegracion.getNombreGrupoPlural() +" anteriores</h4>\n";
     html += "  <ul>\n\t\t";
     while (enum.hasMoreElements() && (integracion++<=(indicePrimerTexto+cantidadTextos))) {
       Texto texto = (Texto)enum.nextElement();
       html += this.getHtmlTextoIntegracionResumida(texto, contenidoIntegracion);
     }
     html += "  </ul>\n";
     return html;
 }
  
 public String getTituloTexto(Long idTexto)
 {
   try {
     ControlComunicacion controlComunicacion = new ControlComunicacion(persistencia);
     return controlComunicacion.getTexto(idTexto).getTitulo();
   }
   catch (Exception ex) {
     ex.printStackTrace();
     return TEXTOS.ERROR;
   }
 }
 
 public String getHtmlTextoIntegracion(Texto texto) throws Exception
 {
	   if (texto == null)
	     return "";
	   //agrego el id para que pueda ser referenciado dentro de la pagina
	   String fecha = "";
	   String hora = "";
	   fecha = utils.Utils.getStrSqlDate(texto.getFecha());
	   hora = utils.Utils.getHoraTimestamp(texto.getFecha());
	   String html =
	       "    <h3><a name=\""+texto.getId()+"\" id=\""+texto.getId()+"\"></a>"+texto.getTitulo()+"<br/>\n\t\t";
	   html += "      <span class=\"fecha\"><strong>Fecha: </strong>"+ fecha +" - <strong>Hora: </strong>"+ hora +" - <strong>Autor: </strong> "+texto.getPersona().getNombreYApellido()+"</span></h3>\n\t\t";
	   html += "      "+texto.getContenido()+"\n\t\t";
	   if (texto.getArchivo()!=null){
	     html += "      <p><img src=\""+this.pagina.getPathLogoDisquete()+"\" width=\"16\" height=\"14\" title=\"Archivo para descargar\" /> <a href=\""+this.pagina.getVistaContenido().getPathCarpetaArchivosRecurso(false)+"/"+texto.getArchivo().getNombre()+"\" target=\"_blank\" >"+texto.getArchivo().getNombre()+" </a></p>\n\t\t";
	   }
	   html+="      <br/>\n\t\t";
	   ControlGrupo controlGrupo = new ControlGrupo(this.persistencia);
	   ControlParticipanteGrupo controlParticipanteGrupo = new ControlParticipanteGrupo(this.persistencia);
	   ControlAula controlAula = new ControlAula(this.persistencia);
	   Participante personaParticipante = null;
	   ParticipanteComision pteCom = null;
	   if(((Boolean)this.pagina.getSession().getAttribute(PARAMETROS_PAGINAS.INTERCOMISION)).booleanValue())
	    	 personaParticipante = controlAula.getParticipante(this.pagina.getIdAula(),this.pagina.getIdPersona());
	  else{
			 pteCom = controlAula.getParticipanteComision(this.pagina.getIdComision(),this.pagina.getIdPersona());
			 personaParticipante = pteCom.getParticipante();
	  }
	   if(this.contenidoIntegracion.getNombreRecurso().compareTo(RECURSOS.INVITACION)==0){
		    if(texto.getEstado().getDescripcion().compareTo(ESTADOS_INTEGRACION.SIN_DECIDIR)==0){
		    	 html +="      <span class=\"fecha\"><strong>Estado: </strong>"+"A&uacute;n no ha sido respondida por la persona que fue invitada."+"</span></h3>\n\t\t";
		  	   if(controlParticipanteGrupo.personaEsIntegranteDelGrupo(this.pagina.getIdGrupo(), this.pagina.getIdPersona())
		  			 || personaParticipante.getTipoUsuario().getNombre().compareTo(TIPO_USUARIOS.ALUMNO)!=0)
		  		   html+="      <br/>\n\t\t"+"      <b><a href=\""+this.pagina.getPathPaginas()+"invitacion_editar.jsp?"+this.getHTMLReferenciasParametros()+"&"+PARAMETROS_PAGINAS.ACCION+"="+ACCIONES_A_REALIZAR.ACTUALIZAR+"&"+PARAMETROS_PAGINAS.ID_TEXTO+"="+texto.getId()+"\">Consultar y/o actualizar invitaci&oacute;n</a></b>\n\t\t";
		  	   else html+="      <br/>\n\t\t"+"      <b><a href=\""+this.pagina.getPathPaginas()+"invitacion_editar.jsp?"+this.getHTMLReferenciasParametros()+"&"+PARAMETROS_PAGINAS.ACCION+"="+ACCIONES_A_REALIZAR.CONSULTAR+"&"+PARAMETROS_PAGINAS.ID_TEXTO+"="+texto.getId()+"\">Consultar invitaci&oacute;n</a></b>\n\t\t";
		    }else if(texto.getEstado().getDescripcion().compareTo(ESTADOS_INTEGRACION.ACEPTADA)==0){
		    	html +="      <span class=\"fecha\"><strong>Estado: </strong>"+"Ya ha sido respondida satisfactoriamente, la persona invitada intregrar&aacute; el grupo."+"</span></h3>\n\t\t";
		    }else if(texto.getEstado().getDescripcion().compareTo(ESTADOS_INTEGRACION.RECHAZADA)==0){
		    	html +="      <span class=\"fecha\"><strong>Estado: </strong>"+"Ya ha sido respondida, a la persona invitada no le interes&oacute; participar en el grupo."+"</span></h3>\n\t\t";
		    }	
	   }else if(this.contenidoIntegracion.getNombreRecurso().compareTo(RECURSOS.SOLICITUD)==0){
		   if(texto.getEstado().getDescripcion().compareTo(ESTADOS_INTEGRACION.SIN_DECIDIR)==0){
		    	 html +="      <span class=\"fecha\"><strong>Estado: </strong>"+"A&uacute;n no se ha determinado que hacer con esta solicitud realizada por la persona interesada."+"</span></h3>\n\t\t";
		    	 if(controlParticipanteGrupo.personaEsIntegranteDelGrupo(this.pagina.getIdGrupo(), this.pagina.getIdPersona())
		    			 || personaParticipante.getTipoUsuario().getNombre().compareTo(TIPO_USUARIOS.ALUMNO)!=0)
		    		 html+="      <br/>\n\t\t"+"      <b><a href=\""+this.pagina.getPathPaginas()+"solicitud_editar.jsp?"+this.getHTMLReferenciasParametros()+"&"+PARAMETROS_PAGINAS.ACCION+"="+ACCIONES_A_REALIZAR.DECISION+"&"+PARAMETROS_PAGINAS.ID_TEXTO+"="+texto.getId()+"\">Consultar y/o decidir solicitud</a></b>\n\t\t";
		    	 else html+="      <br/>\n\t\t"+"      <b><a href=\""+this.pagina.getPathPaginas()+"solicitud_editar.jsp?"+this.getHTMLReferenciasParametros()+"&"+PARAMETROS_PAGINAS.ACCION+"="+ACCIONES_A_REALIZAR.CONSULTAR+"&"+PARAMETROS_PAGINAS.ID_TEXTO+"="+texto.getId()+"\">Consultar solicitud</a></b>\n\t\t";
		    }else if(texto.getEstado().getDescripcion().compareTo(ESTADOS_INTEGRACION.ACEPTADA)==0) 
		    	html +="      <span class=\"fecha\"><strong>Estado: </strong>"+"La solicitud ha sido respondida satisfactoriamente, se le permitir&aacute; a la persona integrar el grupo."+"</span></h3>\n\t\t";
		    else if(texto.getEstado().getDescripcion().compareTo(ESTADOS_INTEGRACION.RECHAZADA)==0) 
		    	html +="      <span class=\"fecha\"><strong>Estado: </strong>"+"No se le permiti&oacute; a la persona interesada integrar el grupo."+"</span></h3>\n\t\t";
	   }		
	   html += "      <br/>\n\t\t";
	   return html;
 }

 public String getHtmlTextoIntegracionResumida(Texto texto, ContenidoIntegracion contenidoIntegracion){
   String html = "";
   html += "       <li>\n\t\t";
   html += "         "+contenidoIntegracion.getLink(texto.getTitulo(),texto.getId().toString())+"<br/>\n\t\t";
   html += "         <strong>Fecha</strong>: "+utils.Utils.getStrSqlDate(texto.getFecha())+
           "- <strong>Autor:</strong> "+texto.getPersona().getNombreYApellido()+"<br/>\n\t\t";

   int cantidadCaracteres=texto.getContenido().length();
   if (cantidadCaracteres>CANTIDAD_CARACTERES_TEXTO_RESUMIDO)
     cantidadCaracteres = CANTIDAD_CARACTERES_TEXTO_RESUMIDO;
   html += "         "+texto.getContenido().substring(0,cantidadCaracteres) +"...\n";
   html += "       </li>\n";
   return html;
 }  
 
 private String getHTMLReferenciasParametros(){
	  return PARAMETROS_PAGINAS.REFRESH+"="+new Long((new java.util.Date()).getTime());
 }
 
 public String getAsuntoIntegracion(Long idIntegracion)
 {
   try {
     ControlComunicacion controlComunicacion = new ControlComunicacion(persistencia);
     return controlComunicacion.getTexto(idIntegracion).getTitulo();
   }
   catch (Exception ex) {
     ex.printStackTrace();
     return TEXTOS.ERROR;
   }
 }
 
}
